<?php 


include_once dirname(__FILE__)."/../common/common.php";
//include_once dirname(__FILE__)."/../util/MemcacheUtil.php";
include_once dirname(__FILE__)."/../util/RedisUtil.php";


/**
* 微信 access token 获取辅助工具
*/
class AccessTokenUtil 
{
	// token 缓存key
	private static $access_token_key="access_token_key";

	// token 缓存时间（单位 秒）
	private static $token_life_time=7200;
	

	// 获取微信 access token
	static function getAccessToken(){

//        echo "-- in AccessTokenUtil->getAccessToken()";

//		$mu=null;

        $ru=null;

		try {

//			$mu=new MemcacheUtil();

            $ru=new RedisUtil();

		} catch (Exception $e) {
			
			 echo $e->getMessage();
		}

		//如果没有开启缓存服务，直接获取token
		if(empty($ru)){

			$token=self::_refreshToken();

		}else{

			//1.获取缓存中保存的 access token
			$token=$ru->get(self::$access_token_key);

			if(empty($token)){

				//2.如果access token 为空，重新获取token
				$token=self::_refreshToken();

				//3.获取成功后，保存到数据缓存中
//				$mu->save(self::$access_token_key,$token,self::$token_life_time);

                $ru->set_with_timeout(self::$access_token_key,$token,self::$token_life_time);
			}

		}



		return $token;

	}


	// 刷新 token
	private static function _refreshToken(){

		$appid = getConfig("app_id");
		$appsecret = getConfig("app_secret");
		$url_access_token=getConfig("url_access_token");

//        echo "appid:$appid   appsecret:$appsecret  url_access_token:".$url_access_token;

		//$url = "$url_access_token?grant_type=client_credential&appid=$appid&secret=$appsecret";

		$data=array('grant_type'=>'client_credential','appid'=>$appid,'secret'=>$appsecret);

		//发送远程请求
		$output=_post_remote_curl($url_access_token,$data);

//        echo "<br>";
//
//        echo "--output:".$output."<br>";

		// 处理返回结果
		$jsoninfo = json_decode($output, true);

		$access_token = $jsoninfo["access_token"];

//        echo "--access_token:".$access_token;

		return $access_token;

	}
}

